library(pixmap)
library(magrittr)
library(EBImage)
library(image.LineSegmentDetector)
library(image.ContourDetector)
library(image.CannyEdges)

setwd("~/Zellkraftwerk/packages/RJobTissueArea")

file <- file.path("inst/data","data_sum_M1730408_pos11.csv")

data.sum <- file%>%
  data.table::fread()

m.data_sum <- data.sum%>% 
  as.matrix()

#cellres: pixel resolution in horizontal and vertical direction

image <-pixmapGrey(m.data_sum,cellres=c(1,1))

plot(image)

EBImage

grid <- expand.grid(sigma = c(1,2,3,4,5,10,100),
             offset = c(100,10,1,0,0.01,0.001,0.0001,0.00001,0.000001,0.0000001))

img2 <- image@grey * 255
# Set up plots for 96 dpi images
  #library(EBImage)
  #dm <- dim(img2)/96
  #dev.new(width = dm[1], height = dm[2])
# Low pass filter with gblur and make binary

for(i in 1:dim(grid)[1]){
  
    writeLines(c(
    paste0("- sigma: ",grid$sigma[i]),
    paste0("- offset: ", grid$offset[i])
  ))
  
  #Low-pass Gaussian filter
  xb <- EBImage::gblur(img2, grid$sigma[i])
  plot(xb)
  
  image2 <- pixmapGrey(xb,cellres=c(1,1)) #(xb-min(xb))/(max(xb)-min(xb))
  
  plot(image2)
  
  
  xt <- EBImage::thresh(xb, offset = grid$offset[i])
  plot(xt)
  
  image3 <- image
  image3@grey <- xt

  plot(image3)
}
## - sigma: 1
## - offset: 100

## - sigma: 2
## - offset: 100

## - sigma: 3
## - offset: 100

## - sigma: 4
## - offset: 100

## - sigma: 5
## - offset: 100

## - sigma: 10
## - offset: 100

## - sigma: 100
## - offset: 100

## - sigma: 1
## - offset: 10

## - sigma: 2
## - offset: 10

## - sigma: 3
## - offset: 10

## - sigma: 4
## - offset: 10

## - sigma: 5
## - offset: 10

## - sigma: 10
## - offset: 10

## - sigma: 100
## - offset: 10

## - sigma: 1
## - offset: 1

## - sigma: 2
## - offset: 1

## - sigma: 3
## - offset: 1

## - sigma: 4
## - offset: 1

## - sigma: 5
## - offset: 1

## - sigma: 10
## - offset: 1

## - sigma: 100
## - offset: 1

## - sigma: 1
## - offset: 0

## - sigma: 2
## - offset: 0

## - sigma: 3
## - offset: 0

## - sigma: 4
## - offset: 0

## - sigma: 5
## - offset: 0

## - sigma: 10
## - offset: 0

## - sigma: 100
## - offset: 0

## - sigma: 1
## - offset: 0.01

## - sigma: 2
## - offset: 0.01

## - sigma: 3
## - offset: 0.01

## - sigma: 4
## - offset: 0.01

## - sigma: 5
## - offset: 0.01

## - sigma: 10
## - offset: 0.01

## - sigma: 100
## - offset: 0.01

## - sigma: 1
## - offset: 0.001

## - sigma: 2
## - offset: 0.001

## - sigma: 3
## - offset: 0.001

## - sigma: 4
## - offset: 0.001

## - sigma: 5
## - offset: 0.001

## - sigma: 10
## - offset: 0.001

## - sigma: 100
## - offset: 0.001

## - sigma: 1
## - offset: 1e-04

## - sigma: 2
## - offset: 1e-04

## - sigma: 3
## - offset: 1e-04

## - sigma: 4
## - offset: 1e-04

## - sigma: 5
## - offset: 1e-04

## - sigma: 10
## - offset: 1e-04

## - sigma: 100
## - offset: 1e-04

## - sigma: 1
## - offset: 1e-05

## - sigma: 2
## - offset: 1e-05

## - sigma: 3
## - offset: 1e-05

## - sigma: 4
## - offset: 1e-05

## - sigma: 5
## - offset: 1e-05

## - sigma: 10
## - offset: 1e-05

## - sigma: 100
## - offset: 1e-05

## - sigma: 1
## - offset: 1e-06

## - sigma: 2
## - offset: 1e-06

## - sigma: 3
## - offset: 1e-06

## - sigma: 4
## - offset: 1e-06

## - sigma: 5
## - offset: 1e-06

## - sigma: 10
## - offset: 1e-06

## - sigma: 100
## - offset: 1e-06

## - sigma: 1
## - offset: 1e-07

## - sigma: 2
## - offset: 1e-07

## - sigma: 3
## - offset: 1e-07

## - sigma: 4
## - offset: 1e-07

## - sigma: 5
## - offset: 1e-07

## - sigma: 10
## - offset: 1e-07

## - sigma: 100
## - offset: 1e-07

image_line_segment_detector

x <- image@grey * 255

linesegments <- image_line_segment_detector(x,
                                            scale = 0.8,
                                            sigma_scale = 0.6,
                                            quant = 2,
                                            ang_th = 22.5,
                                            log_eps = 0,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 162 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

scale = 0.1
linesegments <- image_line_segment_detector(x,
                                            scale = scale,
                                            sigma_scale = 0.6,
                                            quant = 2,
                                            ang_th = 22.5,
                                            log_eps = 0,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 7 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

quant

-default: 2 - no segments with quant 10 - quant 1: more detailed segments in tissue

quant = 1
linesegments <- image_line_segment_detector(x,
                                            scale = 0.8,
                                            sigma_scale = 0.6,
                                            quant = quant,
                                            ang_th = 22.5,
                                            log_eps = 0,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 682 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

  • quant 3: single details in tissue
quant = 3
linesegments <- image_line_segment_detector(x,
                                            scale = 0.8,
                                            sigma_scale = 0.6,
                                            quant = quant,
                                            ang_th = 22.5,
                                            log_eps = 0,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 35 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

ang_th

  • default: 22.5
  • ang_th 1: no lines segments
  • ang_th 100:
ang_th <- 100
linesegments <- image_line_segment_detector(x,
                                            scale = 0.8,
                                            sigma_scale = 0.6,
                                            quant = 2,
                                            ang_th = ang_th,
                                            log_eps = 0,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 609 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

log_eps

log_eps <- 10
linesegments <- image_line_segment_detector(x,
                                            scale = 0.8,
                                            sigma_scale = 0.6,
                                            quant = 2,
                                            ang_th = 22.5,
                                            log_eps = log_eps,
                                            density_th = 0.7,
                                            n_bins = 1024,
                                            union = FALSE,
                                            union_min_length = 5,
                                            union_max_distance = 5,
                                            union_ang_th = 7,
                                            union_use_NFA = FALSE,
                                            union_log_eps = 0)

linesegments
## Line Segment Detector
##   found 36 line segments
plot(image)
plot(linesegments, add = TRUE, col = "red")

library(pixmap)
library(magick)
imagelocation <- system.file("extdata", "chairs.pgm", package="image.LineSegmentDetector")
image <- read.pnm(file = imagelocation, cellres = 1)
x <- image@grey * 255

linesegments <- image_line_segment_detector(x,union=TRUE)
linesegments
plot(image)
plot(linesegments, add = TRUE, col = "red")

image_contour_detector

contourlines  <- image_contour_detector(x, Q = 2)
contourlines
plot(image)
plot(contourlines, add = TRUE, col = "red")

image_canny_edge_detector

edges <- image_canny_edge_detector(x)
edges
plot(edges)